﻿using System;
using System.Collections.Generic;
using Acaweb.Data.Contracts;
using Acaweb.Model.Entities;
using Acaweb.Model.Entities.DatosCompuestos;
using Spring.Transaction.Interceptor;

namespace Acaweb.Data.Dao.NHibernate
{
    public class HorariosCursosDao : HibernateDao<HorariosCursos, HorariosCursosPk>, IHorariosCursosDao
    {
        [Transaction(ReadOnly = true)]
        public IList<HorariosCursos> GetAll()
        {
            return GetAll<HorariosCursos>();
        }

        [Transaction(ReadOnly = true)]
        public IList<HorariosCursos> GetByCurso(CursoPk Curso)
        {
            return this.Session.QueryOver<HorariosCursos>().Where(t => t.HorarioCursoPk.CursoPk == Curso).List();
        }

        [Transaction(ReadOnly = true)]
        public IList<HorariosCursos> GetByCurso(CursoPk Curso, string CodigoDocente)
        {
            return this.Session.QueryOver<HorariosCursos>().Where(t => t.HorarioCursoPk.CursoPk == Curso && t.CodigoDocente == CodigoDocente).List();
        }

        public IList<HorariosCursos> GetByDocenteAndPeriodoAcademico(string Docente, PeriodoAcademico PeriodoAcademico)
        {
            return this.Session.QueryOver<HorariosCursos>().Where(t => t.CodigoDocente == Docente && t.HorarioCursoPk.Ano == PeriodoAcademico.Ano && t.HorarioCursoPk.Periodo == PeriodoAcademico.Periodo).List();
        }
    }
}